package com.example.demo.mapper;

import com.example.demo.entity.UserStats;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户统计数据访问层接口
 * 负责用户统计相关的数据库操作
 */
@Mapper
public interface UserStatsMapper {
    
    /**
     * 根据用户ID查询统计信息
     * @param userId 用户ID
     * @return 用户统计信息
     */
    UserStats selectByUserId(@Param("userId") Long userId);
    
    /**
     * 插入新的用户统计记录
     * @param userStats 用户统计信息
     * @return 影响的行数
     */
    int insert(UserStats userStats);
    
    /**
     * 更新登录统计（增加登录次数，更新最后登录时间）
     * @param userId 用户ID
     * @return 影响的行数
     */
    int updateLoginStats(@Param("userId") Long userId);
    
    /**
     * 更新在线时长
     * @param userId 用户ID
     * @param onlineMinutes 本次在线时长（分钟）
     * @return 影响的行数
     */
    int updateOnlineTime(@Param("userId") Long userId, @Param("onlineMinutes") Long onlineMinutes);
    
    /**
     * 更新登出时间
     * @param userId 用户ID
     * @return 影响的行数
     */
    int updateLogoutTime(@Param("userId") Long userId);
    
    /**
     * 根据用户ID删除统计记录
     * @param userId 用户ID
     * @return 影响的行数
     */
    int deleteByUserId(@Param("userId") Long userId);
}
